import matplotlib.pyplot as plt
import numpy as np

def set_chinese_font():
    """设置中文字体"""
    plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'DejaVu Sans']
    plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

set_chinese_font()


def function_visualization():
    # 定义x范围
    x = np.linspace(-5, 5 ,400)


    # 定义不同函数
    y_linear = 2 * x + 1
    y_quadratic = x**2 - 4   # 二次函数
    y_exponential = 2**x      # 指数函数
    y_trigonometric = np.sin(x) # 正弦型函数

    # 绘制图像
    plt.figure(figsize=(12,8))

    plt.subplot(2,2,1)
    plt.plot(x, y_linear, 'r-', label = 'y = 2x + 1')
    plt.title('一次函数')
    plt.grid(True)
    plt.legend()

    plt.subplot(2,2,2)
    plt.plot(x, y_quadratic, 'g-', label = 'y = x² - 4')
    plt.title('二次函数')
    plt.grid(True)
    plt.legend()

    plt.subplot(2,2,3)
    plt.plot(x, y_exponential, 'b-', label='y = 2^x')
    plt.title('指数函数')
    plt.grid('指数函数')
    plt.grid(True)
    plt.legend()


    plt.subplot(2,2,4)
    plt.plot(x, y_trigonometric, 'h-', label='y = sin(x)')
    plt.title('正弦型函数')
    plt.grid('正弦型函数')
    plt.grid(True)
    plt.legend()

    plt.tight_layout()
    plt.show()

function_visualization()


